package com.ruangong.GitClient.Test.GitHubAPITest;


import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.ruangong.GitClient.GitHubAPI.GitHubFile;
import com.ruangong.GitClient.GitHubAPI.GitHubRepository;
import com.ruangong.GitClient.GitHubAPI.MoMingUtil;
import com.ruangong.GitClient.GitHubAPI.GitHubUser;

import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * 用于测试些不知道在测试什么QvQ。
 * 反正就是可以把仓库里的每个文件夹和文件名都打印出来。
 * 测试GitHubFile.fromJson()和GitHubFile.showDirContent()方法。
 */

public class Test4 {
    public static void main(String[] args) throws Exception {
        String TOKEN = "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";
        GitHubUser gitHubUser = new GitHubUser(TOKEN);
        gitHubUser.showInfo();
//        String json = MoMingUtil.REPOSITORY_TEST_JSON;
//        GitHubRepository repo = GitHubRepository.fromJson(json);
        GitHubRepository repo = GitHubRepository.fromJson(MoMingUtil.getRepositoryInfo("SilverXQI", "Silver_Python"));
        URL url = new URL(repo.getContents_url());
        HttpURLConnection conn = MoMingUtil.createConnection(url);
        conn.setRequestProperty("Accept", "application/vnd.github.v3+json");
        if (conn.getResponseCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
        }

        String jsonInput = MoMingUtil.getHttpURLConnectionContent(conn);
//            System.out.println(jsonInput);
        JsonArray jsonArray = JsonParser.parseString(jsonInput).getAsJsonArray();
        List<GitHubFile> files = new ArrayList<>();
        for (JsonElement element : jsonArray) {
            // 处理每个JSON对象
//                System.out.println(element.getAsJsonObject().toString());
            GitHubFile file = GitHubFile.fromJson(element.getAsJsonObject().toString());
            files.add(file);
//                System.out.println(file.toString());
        }
        for (GitHubFile file : files) {
            if (file.getType().equals("file")) {
//                    file.showFile();
            } else if (file.getType().equals("dir")) {
                file.showDirContent();
            }
        }
//            MoMingUtil.showJson(jsonInput);
        conn.disconnect();
    }
}
